package scut.facerecognition.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import scut.facerecognition.entity.pojo.Post;

/**
 * 帖子 Mapper 接口
 */
@Mapper
public interface PostMapper extends BaseMapper<Post> {
    
    /**
     * 获取帖子列表（按时间排序）
     * @param page 分页参数
     * @return 帖子分页列表
     */
    @Select("SELECT p.* FROM post p WHERE p.status = 1 ORDER BY p.add_time DESC")
    IPage<Post> selectPostsByTime(Page<Post> page);
    
    /**
     * 获取帖子列表（按点赞数排序）
     * @param page 分页参数
     * @return 帖子分页列表
     */
    @Select("SELECT p.* FROM post p WHERE p.status = 1 ORDER BY p.like_count DESC, p.add_time DESC")
    IPage<Post> selectPostsByLikes(Page<Post> page);
    
    /**
     * 增加帖子浏览量
     * @param postId 帖子ID
     * @return 影响行数
     */
    @Update("UPDATE post SET view_count = view_count + 1 WHERE id = #{postId}")
    int incrementViewCount(@Param("postId") Long postId);
    
    /**
     * 增加帖子评论数
     * @param postId 帖子ID
     * @return 影响行数
     */
    @Update("UPDATE post SET comment_count = comment_count + 1 WHERE id = #{postId}")
    int incrementCommentCount(@Param("postId") Long postId);
    
    /**
     * 增加帖子点赞数
     * @param postId 帖子ID
     * @return 影响行数
     */
    @Update("UPDATE post SET like_count = like_count + 1 WHERE id = #{postId}")
    int incrementLikeCount(@Param("postId") Long postId);
    
    /**
     * 减少帖子点赞数
     * @param postId 帖子ID
     * @return 影响行数
     */
    @Update("UPDATE post SET like_count = like_count - 1 WHERE id = #{postId} AND like_count > 0")
    int decrementLikeCount(@Param("postId") Long postId);
}
